#include<p32xxxx.h>
#include<lega-c/proc/p32mx220f032b.h>
#pragma config FNOSC = FRCPLL // Interna oscilador RC Fast (8 MHz) w / PLL
#pragma config FPLLIDIV = DIV_2 // Dividir FRC antes PLL (ahora 4 MHz)
#pragma config FPLLMUL = MUL_20 // PLL Multiply (ahora 80 MHz)
#pragma config FPLLODIV = DIV_2 // Divide Despu?s de PLL (ahora 40 MHz)
#pragma config FWDTEN = OFF // Watchdog Timer discapacitados
#pragma config ICESEL = ICS_PGx1 // ICE / ICD Comm Channel Select
#pragma config JTAGEN = OFF // Desactivar JTAG
#pragma config FSOSCEN = OFF // Desactivar el Oscilador Secundario
#pragma config FPBDIV = DIV_1 // PBCLK = SYCLK

#define rs PORTAbits.RA0 //definici?n de pines de control del LCD
#define e PORTAbits.RA1

#define PINTEMP PORTAbits.RA2//0010

char i[]={'T','E','M','P','E','R','A','T','U','R','A'}; //vector de la palabra de visualizacion linea 1
int j=0;

void lcd (int dato, long ret)
{
    int b=0,a=0;
    long c=ret;
    e=1;
    while(c--){}
    b= dato & 63 ;
    a=dato<<1;
    a= a & 384;
    b= b| a;
    PORTB = b;
    c=ret;
    while(c--){}
    e=0;
    c =b;
    while(c--){}
}

void main(){
    ANSELA=0;TRISA=4;ANSELB=0;TRISB=0;ODCA=0;ODCB=0;long retardos=0;float sensor=0.0;
    int d1=1,d2=2,d3=3,d4=4;
    rs=0;lcd(0x38,2500);lcd(0x06,2000);lcd(0x0C,2000); //inicializaci?n de la LCD a 2 l?neas y 8 bits
    rs=0;
    lcd(0x80,15000);//posici?n de escritura primera fila columna 5
    for ( j=0;j<11;j++)
        {
            rs=1;
            lcd(i[j],15000);} //visualizaci?n de la l?nea 1

    while(1)
    {

        //retardos=25000;while(retardos--){}
        rs=0;
        lcd(0xc5,10000);//posici?n de escritura segunda fila columna 5

        sensor=SEN_TEMPERATURA()*(500.0/1023.0);
        d4=sensor/1000;
        d3=(sensor-(d4*1000))/100;
        d2=(sensor-(d3*100)-(d4*1000))/10;
        d1=(sensor-(d4*1000)-(d3*100)-(d2*10));
        rs=1;
        lcd(0x30+d4,10000);
        lcd(0x30+d3,10000);
        lcd(0x30+d2,10000);
        lcd(0x30+d1,10000);

    }
}

int SEN_TEMPERATURA()
{
     float dat=0.0;
     while(PINTEMP){dat++;}
  return dat;
}

